/* 
 * Enterprise Library Extensions - DI + ORM.
 * Copyright (C) 2006
 *
 * GNU General Public License
 *
 * This program is free software; you can redistribute 
 * it and/or modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 of the 
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 */
using System;
using System.Collections;

namespace ELE.EnterpriseLibrary.Naming.Spi
{
	/// <summary>
  /// This interface represents a builder that creates initial context factories. 
  ///The ONDI framework allows for different initial context implementations to be specified at runtime. 
  ///An initial context is created using an initial context factory. 
  ///A program can install its own builder that creates initial context factories, 
  ///thereby overriding the default policies used by the framework, by calling 
  ///NamingManager.SetInitialContextFactoryBuilder(). 
  ///The InitialContextFactoryBuilder interface must be implemented by such a builder. 
	/// </summary>
	public interface IInitialContextFactoryBuilder
	{
    /// <summary>
    /// Creates an initial context factory using the specified environment. 
    /// <br/><br/>The environment parameter is owned by the caller. The implementation will not modify the 
    /// object or keep a reference to it, although it may keep a reference to a clone or copy.
    /// </summary>
    /// <param name="environment">Environment used in creating an intial context implementation. Can be null.</param>
    /// <returns>A non-null initial context factory.</returns>
    IInitialContextFactory CreateInitialContextFactory(Hashtable environment);

	}
}
